home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Interactive Reference Guide / C-C++ Interactive Reference Guide.iso / c_ref / csource4 / 280_01 / crypt1.c < prev    next >
Text File  |  1989-01-13  |  2KB  |  79 lines

  1. /* [crypt1.c of JUGPDS Vol.46] */
  2. /*
  3. *****************************************************************
  4. *                                *
  5. *    Written by  Hakuo Katayose (JUG-CP/M No.179)        *
  6. *            49-114 Kawauchi-Sanjuunin-machi        *
  7. *            Sendai, Miyagi 980                          *
  8. *            Phone: 0222-61-3219                *
  9. *                                *
  10. *       Modifird by Toshiya Oota   (JUG-CPM No.10)              *
  11. *                   Sakae ko-po 205                 *
  12. *            5-19-6 Hosoda                *
  13. *            Katusikaku Tokyo 124            *
  14. *                                *
  15. *        for MS-DOS Lattice C V3.1J & 80186/V20/V30    *
  16. *                                *
  17. *    Compiler Option: -ccu -k0(1) -ms -n -v -w        *
  18. *                                *
  19. *    Edited & tested by Y. Monma (JUG-CP/M Disk Editor)    *
  20. *            &  T. Ota   (JUG-CP/M Sub Disk Editor)    *
  21. *                                *
  22. *****************************************************************
  23. */
  24.  
  25. /* Library functions for Software Tools */
  26.  
  27. #include "stdio.h"
  28. #include "dos.h"
  29. #include "ctype.h"
  30. #include "tools.h"
  31. #include "toolfunc.h"
  32.  
  33. #include "fcntl.h"        /* for open function */
  34.  
  35. /* crypt1 - encrypt and decrypt for binary file */
  36.  
  37. #define    MAXKEY    32
  38.  
  39. void    main(argc, argv)
  40. int    argc;
  41. char    *argv[];
  42.  
  43. {
  44. int    i, keylen, cnt, n, n2 ,loop;
  45. int    fd1 ,fd2;
  46. char    key[MAXKEY], *p, *q;
  47. char    tbuf[(1024*30)];
  48.  
  49.     p = tbuf;
  50.     loop = 0;
  51.     if (argc < 4)
  52.         error("CRY901 Usage: crypt0 key infile outfile");
  53.     strcpy(key, argv[1]);
  54.     keylen = strlen(key);
  55.     if ((fd1 = open( argv[2],O_RDONLY | O_RAW,0)) == NO) {
  56.         printf("\CRY902 ncrypt1: can't open %s\n", *argv);
  57.         exit();
  58.         }
  59.     else if ((fd2 = open(argv[3],O_CREAT | O_RAW | O_WRONLY,0)) == NO) {
  60.         printf("\CRY903 ncrypt1: can't open %s\n", *argv);
  61.         exit();
  62.         }
  63.     else
  64.         while ((n = read(fd1, p, 256) ) > 0) {
  65.             q = p;
  66.             cnt = n;
  67.             for (i = 1; cnt--; i= i%keylen + 1)
  68.                 *q++ ^= key[i];
  69.             n2 = write(fd2, p, n);
  70.             loop++;
  71.             if (n2 != n) {
  72.                 break;
  73.             }
  74.         }
  75.     printf("\nCRY101 %d record write.",loop);
  76.     close(fd1);
  77.     close(fd2);
  78. }
  79.